serde-hjson 0.9.1

Hjson serialization file format
Documentation

What is Hjson?

A configuration file format for humans. Relaxed syntax, fewer mistakes, more comments. See http://hjson.org

Data types that can be encoded are JavaScript types (see the serde_hjson:Value enum for more details):

  • Boolean: equivalent to rust's bool
  • I64: equivalent to rust's i64
  • U64: equivalent to rust's u64
  • F64: equivalent to rust's f64
  • String: equivalent to rust's String
  • Array: equivalent to rust's Vec<T>, but also allowing objects of different types in the same array
  • Object: equivalent to rust's serde_hjson::Map<String, serde_hjson::Value>
  • Null

Examples of use

Parsing a str to Value and reading the result

//#![feature(custom_derive, plugin)]
//#![plugin(serde_macros)]

extern crate serde_hjson;

use serde_hjson::Value;

fn main() {
let data: Value = serde_hjson::from_str("{foo: 13, bar: \"baz\"}").unwrap();
println!("data: {:?}", data);
println!("object? {}", data.is_object());

let obj = data.as_object().unwrap();
let foo = obj.get("foo").unwrap();

println!("array? {:?}", foo.as_array());
// array? None
println!("u64? {:?}", foo.as_u64());
// u64? Some(13u64)

for (key, value) in obj.iter() {
println!("{}: {}", key, match *value {
Value::U64(v) => format!("{} (u64)", v),
Value::String(ref v) => format!("{} (string)", v),
_ => unreachable!(),
});
}
// bar: baz (string)
// foo: 13 (u64)
}